#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#
# Copyright (c) 2018, Joyent, Inc.
# Copyright 2020 Peter Tribble
#

PROG =		poold
OBJS =		poold.o
SRCS =		$(OBJS:%.o=%.c)

MANIFEST=	poold.xml
SVCMETHOD=	svc-poold

include $(SRC)/cmd/Makefile.cmd
include $(SRC)/cmd/Makefile.cmd.64

JAVA_SUBDIRS =	com/sun/solaris/service/exception \
		com/sun/solaris/service/kstat \
		com/sun/solaris/service/locality \
		com/sun/solaris/service/logging \
		com/sun/solaris/service/pools \
		com/sun/solaris/service/timer \
		com/sun/solaris/domain/pools

SUBDIRS =	libjkstat \
		libjlgrp \
		libjpool \
		libjsyslog

ROOTMANIFESTDIR=	$(ROOTSVCSYSTEM)

all :=		TARGET = all
install :=	TARGET = install
clean :=	TARGET = clean
clobber :=	TARGET = clobber
msg :=		TARGET = msg

$(ROOTMANIFEST):=	FILEMODE= 444
JARFILE =	JPool.jar

JAVA_LIB_PATH =	$(JAVA_ROOT)/jre/lib/$(MACH64)/server
$(BLD_JAVA_11)JAVA_LIB_PATH =	$(JAVA_ROOT)/lib/server
LIBPOOL_PATH = $(ROOTLIB64)

# JAVA_SUBDIRS and PACKAGEDOCS must be synchronized to ensure
# javadoc documentation is generated for all packages.

PACKAGEDOCS =	com.sun.solaris.service.exception \
		com.sun.solaris.service.kstat \
		com.sun.solaris.service.locality \
		com.sun.solaris.service.logging \
		com.sun.solaris.service.pools \
		com.sun.solaris.service.timer \
		com.sun.solaris.domain.pools
DOCDIR =	doc
ROOTUSRLIBDRP = $(ROOTLIB)/pool
INCS =		-I../common \
		-I$(JAVA_ROOT)/include \
		-I$(JAVA_ROOT)/include/solaris
LDLIBS +=	-lpool -L$(JAVA_LIB_PATH) -ljvm
# runpath should point to runtime JAVA_HOME
LDFLAGS +=	-R$(JAVA_LIB_PATH)

# not linted
SMATCH=off

CPPFLAGS +=	$(INCS)
ROOTCMDDIR =	$(ROOT)/usr/lib/pool

CLOBBERFILES +=	$(JARFILE)

#
# Definitions for message catalogue
#
POFILES =	$(OBJS:.o=.po)

#
# Definitions for Java installs
#

JFILES =	poold.properties $(JARFILE)
ROOTJAVA =	$(JFILES:%=$(ROOTUSRLIBDRP)/%)

$(ROOTJAVA) :=	FILEMODE = 444

all:	$(PROG) $(JAVA_SUBDIRS) $(JARFILE) \
		    .WAIT $(SUBDIRS)

clean :	$(JAVA_SUBDIRS) $(SUBDIRS) clean_local
clean_local:
	$(RM) $(OBJS)

clobber : $(JAVA_SUBDIRS) $(SUBDIRS) clobber_local
clobber_local: clean_local
	$(RM) $(CLOBBERFILES)

msg: $(POFILES)

install: $(ROOTCMD) $(JAVA_SUBDIRS) $(JARFILE) \
		    .WAIT $(SUBDIRS) $(ROOTJAVA) $(ROOTMANIFEST) \
		    $(ROOTSVCMETHOD)

check:	$(CHKMANIFEST)

$(JAVA_SUBDIRS): FRC
	@cd $@; pwd; $(MAKE) $(TARGET)
	if [ "$(TARGET)" != "clean" ] && [ "$(TARGET)" != "clobber" ]; \
	then \
		if [ ! -f $(JARFILE) ]; \
		then \
			$(JAR) -cf $(JARFILE) $@/*class; \
		else \
			$(JAR) -uf $(JARFILE) $@/*class; \
		fi \
	fi

$(SUBDIRS): FRC
	@cd $@; pwd; $(MAKE) $(TARGET)

doc:	all
	$(JAVADOC) -private -classpath $(JARFILE): -sourcepath . \
	    -source 7 -d $(DOCDIR) $(PACKAGEDOCS)

$(PROG):	$(OBJS)
	$(LINK.c) -o $(PROG) $(OBJS) $(LDLIBS)
	$(POST_PROCESS)

$(ROOTUSRLIBDRP)/%: %
	$(INS.file)

FRC:

include $(SRC)/cmd/Makefile.targ
